package ilogger

import "time"

// DefaultPrefix 默认日志前缀
const DefaultPrefix = "Boot"

// DefaultTimeFormat 默认的时间格式化
const DefaultTimeFormat = time.DateTime
const DefaultTimeFormatWithMilli = "2006-01-02 15:04:05.000"

// DefaultLevel 默认日志登录
const DefaultLevel = DebugLevel

// LogFormat 日志格式
type LogFormat int

const (
	LogFormatJson LogFormat = iota
	LogFormatText
	LogFormatCustom
	LogUnknown
)

// LogLevel 日志等级
type LogLevel int

const (
	TraceLevel LogLevel = iota // 跟踪:很低的日志级别，一般不会使用
	DebugLevel                 // 调试:指出细粒度信息事件对调试应用程序是非常有帮助的
	InfoLevel                  // 默认:消息在粗粒度级别上突出强调应用程序的运行过程
	WarnLevel                  // 告警:表明会出现潜在错误的情形，有些信息不是错误信息，但是也要给程序员的一些提示
	ErrorLevel                 // 错误:指出虽然发生错误事件，但仍然不影响系统的继续运行
	FailLevel                  // 致命:指出每个严重的错误事件将会导致应用程序的退出
	OffLevel                   // 关闭:最高等级的，用于关闭所有日志记录
)

func LevelString(level LogLevel) string {
	switch level {
	case TraceLevel:
		return "trace"
	case DebugLevel:
		return "debug"
	case InfoLevel:
		return "info"
	case WarnLevel:
		return "warn"
	case ErrorLevel:
		return "error"
	case FailLevel:
		return "fail"
	case OffLevel:
		return "off"
	default:
		return ""
	}
}

const (
	FieldKeyPrefix = "prefix"
	FieldKeyMsg    = "msg"
	FieldKeyLevel  = "level"
	FieldKeyTime   = "time"
	FieldKeyError  = "log_err"
	FieldKeyFunc   = "func"
	FieldKeyFile   = "file"
)
